package month5;

public class M2024_5_6 {
    //面试题
    /*
        1 怎样才能找出最后一次插入时分配了哪个自动增量?
        在关系型数据库中 要找出最后一次插入操作分配的自动增量值
        使用LAST_INSERT_ID()

        新增完之后 要立刻使用这个函数查看 否则会失效
        条件就是 同一个会话才可以查询
     */
    /*
        2 假如一条SQL语句运行时有问题 如何分析这条SQL是如何执行的?
        EXPLAIN SELECT * FORMAT = JSON SELECT * FROM 表名

            EXPLAIN: 提供额外的执行计划信息 比如查询的具体行数统计方式
            FORMAT = JSON: 以JSON格式返回执行计划 便于程序化处理

        在MySQL中，EXPLAIN命令用于分析SQL查询的执行计划，帮助我们理解数据库如何执行SQL语句，以便进行性能优化。
        当你使用EXPLAIN与SELECT *结合时，它会显示关于所选查询的元数据，
        包括哪些表被访问、如何连接它们以及预计的执行顺序。然而，FORMAT选项是用来指定输出格式的，
        不同的格式可能会提供不同级别的详细信息。常见的格式有JSON和Text（默认）。
        如果你只是写EXPLAIN SELECT * FORMAT，这看起来像是一个不完整的命令，因为没有指定FORMAT后的具体子选项。
        下面是一些可能的FORMAT值及其含义：

        FORMAT=Text（默认）：
        提供了一种简单的文本格式，通常包含以下列：

        id: 查询的唯一标识符。
            注意 查询出的多条记录id相同 表示这几条记录是被同一时间执行的 并不表示其他含义
        select_type: 查询类型（如SIMPLE, PRIMARY, SUBQUERY等）。
        table: 查询涉及的表。
        type: 访问类型（例如ALL, INDEX, range, ref等）。
        possible_keys: 可能使用的索引。
        key: 实际使用的索引。
        key_len: 使用的索引长度。
        ref: 哪个字段或常量与索引比较。
        rows: 预期要扫描的行数。
        Extra: 其他信息，比如是否使用了临时表、文件排序等。

        FORMAT=JSON：
        提供JSON格式的输出，包含更多详细信息，更容易机器解析。
        FORMAT=XML（如果支持）：
        输出为XML格式，方便在XML工具中处理。
        FORMAT=Tree（如果支持）：
        可能提供一个树形结构的视图，展示查询的层次结构。
        FORMAT=Vertical：
        将输出以垂直格式显示，每行显示一个属性和对应的值，更易于人类阅读。
        FORMAT=Old（在某些旧版本中）：
        返回旧版的文本格式。

        请注意，具体的FORMAT选项取决于你使用的MySQL版本及其配置。
        在实际使用时，你应该指定一个具体的格式，如EXPLAIN FORMAT=JSON SELECT * FROM table。
     */
    /*
        请说明TRUNCATE TABLE 和 DELETE TABLE的区别
        用于快速删除表中所有记录 不会触发触发器 也不会记录每条删除的行 因此速度非常快 但该操作不可回滚 且无法带条件删除

        可以按照逐行删除记录 执行时会记录每一行记录的变化
     */
    //----------------------------------------------------------------------------------------
    /**
     * 内连接
     * 关联查询的另一种写法
     *
     * 语法
     * SELECT 字段
     * FROM 表A
     * JOIN 表B ON 连接条件(B表与A表的连接条件)
     * JOIN 表C ON 连接条件(C表与A或B的连接条件)
     * JOIN...
     * WHERE 过滤条件
     *
     * 条件结构清晰 字段分工明确
     */

    /**
     * 多对多
     * 双向一对多 例如学生和老师之间就是双向一对多 也就是多对多
     *
     * 关联关系表 实现多对多
     */

    /*
         自连接/自关联
         设计情景: 树状结构 有联系但是又有上下级一对多关系
     */






}
